﻿//*** Guidance generated code ***//
using System;
using System.Collections.Generic;
using System.Diagnostics.Contracts;
using System.Linq;
using System.Xml.Linq;

using ProjectBase.Core.Diagnostics;

namespace ProjectBase.Core
{
    /// <summary>
    ///     Provides set of publishing methods
    /// </summary>
    [ContractClass(typeof(PublishingProvider))]
    public interface IPublishingProvider
    {
        void Init(XElement settings);
        void Shutdown();

        void Publish(object reporter, string message, Exception exception);
        void Publish(object reporter, Severity severity, object message, params object[] args);
        void Publish(object reporter, Func<string> message, Severity severity);
    }
}
